﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.Globalization;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Proyecto_e.Models;
using System.Data;
using System.Data.Objects;
using System.Drawing;
using System.IO;
using System.Drawing.Imaging;

namespace Proyecto_e.Models
{
    public class ModeloEncuesta
    {
        [Required]
        public string id_encuesta { set; get; }
        [Required]
        public string id_usuario { set; get; }
        [Required]
        public string titulo { set; get; }
        [Required]
        public string descripcion { set; get; }
        [Required]
        public string estado { set; get; }
        [Required]
        public string url { set; get; } 
       
        proyecto_eEntities1 entidades = new proyecto_eEntities1();
        
       
        public List<encuesta> getEncuestasUsuario(int id)
        {
           var listado = entidades.encuesta.Where("it.ID_USUARIO = "+id+"");
           return  listado.ToList();
        }

        public encuesta getEncuesta(int id_usuario, int id_encuesta)
        {
            var listado = entidades.encuesta.Where("it.ID_ENCUESTA = " + id_encuesta + " and " + "it.ID_USUARIO = " + id_usuario);
            return listado.ToList().First();
        }

        public object delallarencuesta(int id)
        {
            var encdetails = (from n in entidades.encuesta where n.ID_ENCUESTA == id select n).First();
            return encdetails;
        }

        public void insertarBD(Encuesta e)
        {
            encuesta nueva = new encuesta();
            nueva.ID_ENCUESTA = e.id_encuesta;
            nueva.ID_USUARIO = Convert.ToInt32(e.id_usuario);
            nueva.TITULO = e.titulo;
            nueva.DESCRIPCION = e.descripcion;
            nueva.ESTADO = e.estado;
            nueva.URL = e.url;
            //nueva.imagen = ImageAArray(Image.FromFile(e.imagen));
            entidades.AddToencuesta(nueva);
            entidades.SaveChanges();
            entidades.AcceptAllChanges();           
        }

        public void actualizarBD(Encuesta e)
        {
            encuesta nueva = new encuesta();
            nueva.ID_ENCUESTA = e.id_encuesta;
            nueva.ID_USUARIO = Convert.ToInt32(e.id_usuario);
            nueva.TITULO = e.titulo;
            nueva.DESCRIPCION = e.descripcion;
            nueva.ESTADO = e.estado;
            nueva.URL = e.url;           
            //nueva.imagen = ImageAArray(Image.FromFile(e.imagen));   
            RefreshMode r = new RefreshMode();
            r = RefreshMode.StoreWins;
            entidades.Refresh(r, nueva);           
            entidades.SaveChanges();
            entidades.AcceptAllChanges();
        }

        public void eliminarBD(string id)
        {
            int id_encuesta= Convert.ToInt32(id);
            var encuesta = entidades.encuesta.First(n => n.ID_ENCUESTA == id_encuesta);
            entidades.DeleteObject(encuesta);
            entidades.SaveChanges();
            entidades.AcceptAllChanges();
        }

        public List<encuesta> ListarEncuestas()
        {
            var listado = entidades.encuesta;
            return listado.ToList();
        }

       
        public List<encuesta> listarBD()
        {
            return entidades.encuesta.ToList();
        }

        public int id_ultima_encuesta(int id)
        {
            var listado=entidades.encuesta.Where("it.ID_USUARIO = " + id);
            if (listado.Count()>0)
            return listado.ToList().Last().ID_ENCUESTA;   
            else
            return 1;  
        }

        public bool validar_url(string url)
        {
            var listado=entidades.encuesta.Where("it.URL = '" + url+"'");

            if (listado.Count() > 0)
                return true;
            else
                return false;
        }
        
        public bool validar_estado(string url)
        {
            var listado = entidades.encuesta.Where("it.URL = '" + url + "'");

            if (listado.Count() > 0 && listado.ToList().Last().ESTADO=="abierta")
                return true;
            else
                return false;
        }


        public void set_estado(int id_encuesta,int id_usuario,string estado)
        {
            
        }

        public byte[] ImageAArray(Image Imagen)
        {
            MemoryStream ms = new MemoryStream();
            Imagen.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);
            return ms.ToArray();
        }
    }
}